The ROSE Source-to-Source Compiler Infrastructure
نویسندگان
چکیده
The development of future software for proposed new computer architectures is expected to make significant demands on compiler technologies. Significant rewriting of applications will be likely to support the use of new hardware features and preserve the current software investment. Existing compilers provide little support for the broad range of research efforts addressing exascale challenges, such as parallelism, locality, resiliency, power efficiency, etc. The economics of how new machines will change an existing code base of software, that is too expensive to manually rewrite, may well drive automated mechanisms to transform existing software to take advantage of future machine features. This approach will lessen the cost and delay of the move to new, and possibly radically different, future architectures. Source-to-source compilers provides a pragmatic vehicle to support research, development, and deployment of novel compiler technologies by compiler experts or even advanced application developers. Within a source-to-source approach the input source code is read by the compiler, an internal representation (IR) is constructed, the IR is the basis of analysis that is used to guide transformations, the transformations occur on the IR, the IR is used to regenerate new source code, which is then compiled by a backend compiler. Our source-to-source compiler, ROSE, is a project to support the requirements of DOE. Work on ROSE has focused on the development of a community based project to define source-to-source compilation for a broad range of languages especially targeted at DOE applications (addressing robustness and large scale codes as required for DOE applications). Novel research areas are most easily supported when they can leverage significant tool chains that interact and use source code while allowing the hardware vendor’s own compiler for low level optimizations. In fact, high level optimization are rarely feasible for existing low level compilers for common languages such as C, C++, and Fortran. ROSE addresses the economics of how compiler research can be moved closer to the audience with significant technical performance problems and for whom the hardware is likely to be changing significantly in the next decade. Within ROSE it is less the goal to solve all problems than to permit domain experts to better solve their own problems. This talk will focus on the design and motivation for ROSE as an open community source-to-source compiler infrastructure to support performance optimization, tools for analysis, verification and software assurance, and general cus[Copyright notice will appear here once ’preprint’ option is removed.] tom analysis and transformations needs directly on software using the languages common within DOE High Performance Computing.
منابع مشابه
An Extensible Open-Source Compiler Infrastructure for Testing
Testing forms a critical part of the development process for large-scale software, and there is growing need for automated tools that can read, represent, analyze, and transform the application’s source code to help carry out testing tasks. However, the support required to compile applications written in common general purpose languages is generally inaccessible to the testing research communit...
متن کاملShared and Distributed Memory Parallel Security Analysis of Large-Scale Source Code and Binary Applications∗
Many forms of security analysis on large scale applications can be substantially automated but the size and complexity can exceed the time and memory available on conventional desktop computers. Most commercial tools are understandably focused on such conventional desktop resources. This paper presents research work on the parallelization of security analysis of both source code and binaries wi...
متن کاملRuntime Detection of C-Style Errors in UPC Code
Unified Parallel C (UPC) extends the C programming language (ISO C 99) with explicit parallel programming support for the partitioned global address space (PGAS), which provides a global memory space with localized partitions to each thread. Like its ancestor C, UPC is a low-level language that emphasizes code efficiency. The absence of dynamic (and static) safety checks allows programmer overs...
متن کاملToward The Automated Generation of Components from Existing Source Code
A major challenge to achieving widespread use of software component technology in scientific computing is an effective migration strategy for existing, or legacy, source code. This paper describes initial work and challenges in automating the identification and generation of components using the ROSE compiler infrastructure and the Babel language interoperability tool. Babel enables calling int...
متن کاملAnalyzing and Visualizing Whole Program Architectures
This paper describes our work to develop new tool support for analyzing and visualizing the architecture of complete large-scale (millions or more lines of code) programs. Our approach consists of (i) creating a compact, accurate representation of a whole C or C++ program, (ii) analyzing the program in this representation, and (iii) visualizing the analysis results with respect to the program’s...
متن کامل